/**
 * clase que contiene el servidor para los clientes
 * Sumset
 * Andres Mauricio Jaramillo Gonzalez
 * 22/01/12
 */
package com.sumset.servidor;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

/**
 * @author Andres
 * 
 */
public class servidor extends JFrame implements ActionListener {
	private JTextArea jTextArea1;
	private JButton cerrar;


	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		servidor s=new servidor();		
	    s.runServer();
		s.show();
	}

	/**
	 * conatructor de la clase
	 * 
	 */
	public servidor() throws HeadlessException {
		super();
		initGUI();
		this.setVisible(true);
	}

	/**
	 * construccion de la interfaz grafica
	 */
	private void initGUI() {
		try {
			{
				this.setTitle("Consola del Servidor");
				getContentPane().setLayout(null);
				{
					jTextArea1 = new JTextArea();
					getContentPane().add(jTextArea1);
					jTextArea1.setText("La consola  ");
					jTextArea1.setBounds(12, 12, 445, 343);
				}
				{
					cerrar = new JButton();
					getContentPane().add(cerrar);
					cerrar.setText("Cerrar");
					cerrar.setBounds(199, 369, 96, 23);
					cerrar.addActionListener(this);
				}
			}
			{
				this.setSize(485, 441);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * metodo para los eventos de los botones de la interfaz
	 */
	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == cerrar) { // en caso de oprimir el boton
			this.dispose();
		}
	}

	/**
	 * metodo que muestra en la interfaz un mensaje x
	 * 
	 * @param mensaje
	 *            que se quiere mostrar
	 */
	public void mensaje(String mensaje) {
		jTextArea1.append(mensaje + "\n");
	}

	public void runServer() throws IOException {
		ServerSocket servComunicacion = null;
		ServerSocket servEnvios = null;
		boolean escuchador = true;

		//try {
			servComunicacion = new ServerSocket();
			servEnvios = new ServerSocket(8082);
			mensaje("Arranco el Servidor");

			//while (escuchador) {
				Socket sock1 = null;
				Socket sock2 = null;

				//try {
					mensaje("En espera de Usuarios");
					sock1=servComunicacion.accept();
					sock2=servEnvios.accept();
				
				//} catch (IOException e) {
					//mensaje("Fallo Aceptacion" + servComunicacion);
					//System.err.println("Caught IOException: " + e.getMessage());
					//throw new IOException("Fallo la Aceptacion del Socket");
				//}
				hiloServidor user = new hiloServidor(sock1,sock2,this);
				System.out.println("corrio un servidor");
				Thread hilo=new Thread(user);
				hilo.start();
				if(escuchador==true)System.out.println("true");
				if(escuchador==false)System.out.println("false");
				//			}
		//} catch (IOException e) {
			//mensaje("Error :"+e);			
			//try {
				//throw  new IOException("Error");
			//} catch (IOException e1) {
				// TODO Auto-generated catch block
				//e1.printStackTrace();
			//}
		//}

	}

}
